package com.dux.commons.configuration.transformers;

import java.lang.reflect.Field;

import com.dux.commons.configuration.PropertyTransformer;
import com.dux.commons.configuration.TransformationException;



/**
 * 这个类实现了布尔型的转换.
 * <p/>
 * "true/false" 或则 "1/0" 都可以标识布尔类型
 * {@link org.openaion.commons.configuration.TransformationException} 被抛出
 * 
 * @author 杜祥
 * @create 2013-6-29
 */
public class BooleanTransformer implements PropertyTransformer<Boolean>
{
	/**
	 * 布尔型的转换器实例，线程安全的无需创建多个。
	 */
	public static final BooleanTransformer	SHARED_INSTANCE	= new BooleanTransformer();

	/**
	 * 将字符串转换布尔型
	 * 
	 * @param value
	 *            将要被转换的值
	 * @param field
	 *            需要赋值的域
	 * @return 布尔对象表示转换的值
	 * @throws TransformationException
	 *             如果出现错误抛出此异常
	 */
	@Override
	public Boolean transform(String value, Field field) throws TransformationException
	{
		
		if("true".equalsIgnoreCase(value) || "1".equals(value))
		{
			return true;
		}
		else if("false".equalsIgnoreCase(value) || "0".equals(value))
		{
			return false;
		}
		else
		{
			throw new TransformationException("Invalid boolean string: " + value);
		}
	}
}
